import java.io.IOException;

public interface IClient {
	
	/**
	 * start client and connect to the relay
	 * @param relayHostName
	 * @param relayPortNumber
	 * @throws IOException
	 */
	public void startClient(String relayHostName, int relayPortNumber)
			throws IOException;

	/**
	 * client shutdown
	 */
	public void stopClient();

	/**
	 * connect to the relay with the client userName
	 * @param requestId
	 */
	public void connectToRelay(int requestId);

	/**
	 * disconnect from the Relay
	 * @param requestId
	 */
	public void disconnectFromRelay(int requestId);

	/**
	 * register for a specified topic
	 * @param topicName
	 * @param requestId
	 */
	public void registerForTopic(String topicName, int requestId);

	/**
	 * unregister from the topic
	 * @param topicName
	 * @param requestId
	 */
	public void unregisterFromTopic(String topicName, int requestId);

	/**
	 * send message to a specified topic
	 * @param topicName
	 * @param message
	 * @param requestId
	 */
	public void sendTopicMessage(String topicName, String message, int requestId);

}
